草庐IT

c++ - C++中static的含义

全部标签

c++ - 弃用 static 关键字...不再?

在C++中,可以在翻译单元中使用static关键字来影响符号(变量或函数声明)的可见性。在n3092中,这已被弃用:AnnexD.2[depr.static]Theuseofthestatickeywordisdeprecatedwhendeclaringobjectsinnamespacescope(see3.3.6).在n3225中,这已被删除。onlyarticleIcouldfind有点不正式。它确实强调了,为了与C的兼容性(以及将C程序编译为C++的能力),弃用是令人讨厌的。但是,将C程序直接编译为C++可能已经是一种令人沮丧的体验,因此我不确定是否值得考虑。有谁知道为什么改

c++ - static_assert 有什么作用,你会用它做什么?

你能举一个例子,static_assert(...)('C++11')可以优雅地解决手头的问题吗?我熟悉运行时assert(...)。我什么时候应该更喜欢static_assert(...)而不是常规的assert(...)?另外,在boost中有一个叫做BOOST_STATIC_ASSERT的东西,和static_assert(...)一样吗? 最佳答案 静态断言用于在编译时进行断言。当静态断言失败时,程序根本无法编译。这在不同的情况下很有用,例如,如果您通过代码实现某些功能,该代码严重依赖于恰好具有32位的unsignedint

c++ - 理解术语和概念的含义——RAII(Resource Acquisition is Initialization)

各位C++开发人员能否给我们一个关于什么是RAII的很好的描述,为什么它很重要,以及它是否可能与其他语言有任何相关性?我知道一点。我相信它代表“资源获取即初始化”。但是,该名称与我对RAII是什么(可能不正确)的理解不一致:我的印象是RAII是一种在堆栈上初始化对象的方法,这样,当这些变量超出范围时,析构函数将自动被调用导致资源被清理。那么为什么不叫“使用堆栈触发清理”(UTSTTC:)?你如何从那里到“RAII”?你怎么能在堆栈上做一些东西来清理堆上的东西?另外,是否存在无法使用RAII的情况?你有没有发现自己希望垃圾收集?至少有一个垃圾收集器可以用于某些对象同时让其他对象受到管理?

objective-c - 将未知行数添加到 'Static Cells' UITableView

我在InterfaceBuilder中创建了一个静态表,其中包含6个部分,所有部分的行数都不同。我现在想添加具有不同行数的第7部分。首先,一旦我取消注释由Xcode插入的标准表委托(delegate)方法,我就会在self.tableView.tableHeaderView=containerView;我在表格中添加了标题。更重要的是,下面的代码让我崩溃了-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{return7;}-(NSInteger)tableView:(UITableView*)tableVie

iphone - 警告 "while a presentation is in progress!"的含义

当我将Instagram集成到我的项目中时。我从UIImagePickerController得到一个image之后我想将它发送到Instagram但是当我发送image到Instagram通过UIDocumentInteractionController委托(delegate)方法presentOptionsMenuFromRect:inView:animated:likethis[documentInteractionControllerpresentOptionsMenuFromRect:CGRectZeroinView:self.viewanimated:YES];警告出现警告

objective-c - 定义缓存变量时在objective-c中使用static关键字

我正在查看以下苹果示例源代码:/*Cachetheformatter.Normallyyouwoulduseoneofthedateformatterstyles(suchasNSDateFormatterShortStyle),butherewewantaspecificformatthatexcludesseconds.*/staticNSDateFormatter*dateFormatter=nil;if(dateFormatter==nil){dateFormatter=[[NSDateFormatteralloc]init];[dateFormattersetDateForm

objective-c - Xcode intellisense 彩色框中字母的含义,如 f、T、C、M、P、C、K、# 等

最近,我开始使用Xcode4开发iOS应用程序。在Xcodeintellisense的自动完成框中,每个建议之前的彩色框中都有一些字母。我知道它们代表我们正在输入的单词的属性,例如f、T、C、M、P、C、K、#等。Istheresomekindofglossaryavailabletofindtheirquickmeanings?f、C、T、#的含义是可以理解的(函数、类等),但还有很多其他的我不知道。我认为这些字母在VisualStudio、Netbeans等所有IDE中都是标准的。如果我错了,请纠正我。请提出建议。 最佳答案 在

c++ - Clang 和 GCC vs MSVC 和 ICC : Is a static_assert in the copy/move constructor required to work, 如果复制/移动省略也可以应用?

我的模板结构的移动构造函数中有一个static_assert。编译器是否需要考虑这个static_assert,即使复制省略是可能的?这是精简的场景:#includetemplatestructX{X(X&&){static_assert(std::is_same::value,"IntentionalFailure");}};autoimpl()->X;autotest()->decltype(impl()){returnimpl();}intmain(){test();}GCC和Clang同意评估static_assert并且编译失败。另一方面,MSCV和ICC可以很好地编译代码。

c++ - Clang 和 GCC vs MSVC 和 ICC : Is a static_assert in the copy/move constructor required to work, 如果复制/移动省略也可以应用?

我的模板结构的移动构造函数中有一个static_assert。编译器是否需要考虑这个static_assert,即使复制省略是可能的?这是精简的场景:#includetemplatestructX{X(X&&){static_assert(std::is_same::value,"IntentionalFailure");}};autoimpl()->X;autotest()->decltype(impl()){returnimpl();}intmain(){test();}GCC和Clang同意评估static_assert并且编译失败。另一方面,MSCV和ICC可以很好地编译代码。

php - PHP 中的 self::$bar 和 static::$bar 有什么区别?

下面例子中使用self和static有什么区别?classFoo{protectedstatic$bar=1234;publicstaticfunctioninstance(){echoself::$bar;echo"\n";echostatic::$bar;}}Foo::instance();产生12341234 最佳答案 当您使用self来指代类成员时,您指的是在其中使用关键字的类。在这种情况下,您的Foo类定义了一个名为$bar的protected静态属性。当您在Foo类中使用self来引用该属性时,您引用的是同一个类。因此,